package main

/*
*
为什么需要select?
在某些场景下我们需要同时从多个通道接收数据，从通道接收数据时，如果没有数据可以接收机会发生阻塞，也许我们会写出下面这种遍历方式来实现：

	for{
	    // 尝试从ch1接收值
	    data, ok := <-ch1
	    // 尝试从ch2接收值
	    data, ok := <-ch2
	    …
	}

这种方式虽然实现从多个通道接收值的需求，但是运行性能会差很多。为了应对这种场景，Go内置了select关键字，可以同时相应多个通道的操作。

select 多路复用：
select 的使用类似与switch语句，他有一系列case 分支和一个默认分支，每个case 会对应一个通道的通信（接收或者发送）过程，
select会一直等待，直到某个case的通信操作完成时，就会执行case 分支对应的语句，具体格式如下：

	select {
	 case <-chan1:
	    // 如果chan1成功读到数据，则进行该case处理语句
	 case chan2 <- 1:
	    // 如果成功向chan2写入数据，则进行该case处理语句
	 default:
	    // 如果上面都没有成功，则进入default处理流程
	 }
*/
func main() {

}
